home *** CD-ROM | disk | FTP | other *** search
- package mx.controls.scrollClasses
- {
- import flash.events.MouseEvent;
- import flash.geom.Point;
- import mx.controls.Button;
- import mx.core.mx_internal;
- import mx.events.ScrollEventDetail;
-
- use namespace mx_internal;
-
- public class ScrollThumb extends Button
- {
- mx_internal static const VERSION:String = "2.0.1.0";
-
- private var lastY:Number;
-
- private var datamax:Number;
-
- private var datamin:Number;
-
- private var ymax:Number;
-
- private var ymin:Number;
-
- public function ScrollThumb()
- {
- super();
- explicitMinHeight = 10;
- stickyHighlighting = true;
- }
-
- private function mouseMoveHandler(param1:MouseEvent) : void
- {
- var _loc2_:Point = null;
- var _loc3_:Number = NaN;
- var _loc4_:ScrollBar = null;
- var _loc5_:Number = NaN;
- var _loc6_:Number = NaN;
- if(ymin == ymax)
- {
- return;
- }
- _loc2_ = new Point(param1.stageX,param1.stageY);
- _loc2_ = globalToLocal(_loc2_);
- _loc3_ = _loc2_.y - lastY;
- _loc3_ += y;
- if(_loc3_ < ymin)
- {
- _loc3_ = ymin;
- }
- else if(_loc3_ > ymax)
- {
- _loc3_ = ymax;
- }
- _loc4_ = ScrollBar(parent);
- _loc4_.mx_internal::isScrolling = true;
- mx_internal::$y = _loc3_;
- _loc5_ = _loc4_.scrollPosition;
- _loc6_ = Math.round((datamax - datamin) * (y - ymin) / (ymax - ymin)) + datamin;
- _loc4_.scrollPosition = _loc6_;
- _loc4_.mx_internal::dispatchScrollEvent(_loc5_,ScrollEventDetail.THUMB_TRACK);
- }
-
- override protected function measure() : void
- {
- super.measure();
- measuredWidth = 14;
- measuredHeight = 10;
- }
-
- mx_internal function setRange(param1:Number, param2:Number, param3:Number, param4:Number) : void
- {
- this.ymin = param1;
- this.ymax = param2;
- this.datamin = param3;
- this.datamax = param4;
- }
-
- override protected function mouseDownHandler(param1:MouseEvent) : void
- {
- var _loc2_:ScrollBar = null;
- super.mouseDownHandler(param1);
- _loc2_ = ScrollBar(parent);
- _loc2_.mx_internal::oldPosition = _loc2_.scrollPosition;
- lastY = param1.localY;
- systemManager.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler,true);
- systemManager.stage.addEventListener(MouseEvent.MOUSE_MOVE,stage_mouseMoveHandler);
- }
-
- override mx_internal function buttonReleased() : void
- {
- super.mx_internal::buttonReleased();
- stopDragThumb();
- }
-
- private function stopDragThumb() : void
- {
- var _loc1_:ScrollBar = null;
- _loc1_ = ScrollBar(parent);
- _loc1_.mx_internal::isScrolling = false;
- _loc1_.mx_internal::dispatchScrollEvent(_loc1_.mx_internal::oldPosition,ScrollEventDetail.THUMB_POSITION);
- _loc1_.mx_internal::oldPosition = NaN;
- systemManager.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler,true);
- systemManager.stage.removeEventListener(MouseEvent.MOUSE_MOVE,stage_mouseMoveHandler);
- }
-
- private function stage_mouseMoveHandler(param1:MouseEvent) : void
- {
- if(param1.target != stage)
- {
- return;
- }
- mouseMoveHandler(param1);
- }
- }
- }
-
-